package com.atguigu.tingshu.album.api;

import com.atguigu.tingshu.album.service.AlbumInfoService;
import com.atguigu.tingshu.album.service.TestService;
import com.atguigu.tingshu.common.cache.GuiguCache;
import com.atguigu.tingshu.common.login.GuiLogin;
import com.atguigu.tingshu.common.result.Result;
import com.atguigu.tingshu.query.album.AlbumInfoQuery;
import com.atguigu.tingshu.vo.album.AlbumInfoVo;
import com.atguigu.tingshu.vo.album.AlbumListVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;



@Tag(name = "专辑管理")
@RestController
@RequestMapping("/api/album/albumInfo")
@SuppressWarnings({"unchecked", "rawtypes"})
public class AlbumInfoApiController {

	@Autowired
	private AlbumInfoService albumInfoService;

	/**
	 * 保存专辑
	 * @param albumInfoVo
	 * @return
	 */
	@GuiLogin
	@PostMapping("/saveAlbumInfo")
	public Result saveAlbumInfo(@RequestBody AlbumInfoVo albumInfoVo){
		albumInfoService.saveAlbumInfo(albumInfoVo);
		return Result.ok();
	}

	/**
	 * 分页功能
	 * @param page
	 * @param limit
	 * @param albumInfoQuery
	 * @return
	 */
	@GuiLogin
	@PostMapping("findUserAlbumPage/{page}/{limit}")
	public Result<Page<AlbumListVo>> findUserAlbumPage(@PathVariable(value = "page") Integer page ,
													   @PathVariable(value = "limit") Integer limit,
													   @RequestBody AlbumInfoQuery albumInfoQuery){
		Page<AlbumListVo> pageinfo = new Page<>(page,limit);
		return albumInfoService.findUserAlbumPage(pageinfo,albumInfoQuery);
	}

	/**
	 * 删除专辑功能
	 * @param categoryId
	 * @return
	 */

	@GuiLogin
	@DeleteMapping("/removeAlbumInfo/{categoryId}")
	public Result removeAlbumInfo(@PathVariable(value = "categoryId" ) Long categoryId){
		albumInfoService.removeAlbumInfo(categoryId);
		return Result.ok();
	}

	/**
	 * 修改前回显数据
	 * @param alumId
	 * @return
	 */

	@GuiLogin
	@GetMapping("/getAlbumInfo/{albumId}")
	public Result  getAlbumInfo(@PathVariable(value = "albumId") Long alumId ){

		return Result.ok(albumInfoService.getAlbumInfo(alumId));
	}


	/**
	 * 修改专辑
	 * @param albumId
	 * @param albumInfoVo
	 * @return
	 */

	@GuiLogin
	@PutMapping("/updateAlbumInfo/{albumId}")
	public Result updateAlbumInfo(@PathVariable("albumId") Long albumId , @RequestBody AlbumInfoVo albumInfoVo){
		albumInfoService.updateAlbumInfo(albumId,albumInfoVo);
		return Result.ok();
	}

	/**
	 * 获取用户所有专辑列表
	 * @return
	 */
//	@GuiguCache
	@GuiLogin
	@GetMapping("/findUserAllAlbumList")
	public Result findUserAllAlbumList(){
		return Result.ok(albumInfoService.findUserAllAlbumList());
	}



}

